#pragma once

#include <string>

namespace mcp {

/// @brief Version information for the MCP C++ SDK
class Version {
public:
    static constexpr int MAJOR = 1;
    static constexpr int MINOR = 0;
    static constexpr int PATCH = 0;

    static constexpr const char* VERSION_STRING = "1.0.0";
    static constexpr const char* COMMIT_HASH = "development";

    /// @brief Get the version as a string
    /// @return Version string in format "major.minor.patch"
    static std::string get_version_string();

    /// @brief Get detailed version information
    /// @return Detailed version string including commit hash
    static std::string get_version_info();

    /// @brief Check if the current version is compatible with the specified version
    /// @param major Major version to check
    /// @param minor Minor version to check
    /// @param patch Patch version to check
    /// @return true if compatible, false otherwise
    static bool is_compatible(int major, int minor, int patch = 0);
};

} // namespace mcp